#include "app.h"


uint8_t tx_buf[32] = {0};
uint8_t rx_buf[32] = {0};
void si24r1_task_Function(void *pvParameters)
{
    SI24R1_Init();
    uint8_t ssc_flag = 0;//self_start check(1:success 0:failed)
    static uint8_t value_default = 1;//0:表示初始为发送测，1：表示初始为接收测
	static uint8_t start_state = 1;
    static uint8_t pedal_delay_count = 0;//脚踏侧如果接收数据一直失败，则回到最初的发送模式
	static uint8_t master_delay_count = 0;//主机侧如果发送数据一直失败，则回到最初的接收模式
	while(1)
	{
        if(ssc_flag == 0)
        {
            vTaskDelay(100);
            if(SI24R1_Check() == 0)
            {
                ssc_flag = 1;
                DBUG_SHOW("SI24R1 is working properly.\r\n");
            }
        }

        if(ssc_flag == 1)
        {
            uint8_t tx_res = 3;
			uint8_t rx_res = 3;
            if(value_default == 0)
				{
					tx_buf[0] += 1;
					tx_buf[1] += 2;
					tx_res = tx_package(tx_buf);
				}
				if(value_default == 1)
				{
					SI24R1_RX_Mode();
					rx_res = SI24R1_RxPacket(rx_buf);
				}				
				if(tx_res == 0x20)//表示发送成功，此时切换状态
				{
					value_default = 1;
					pedal_delay_count = 0; //在脚踏侧如果发送成功，则接收失败的延时计数清0
				}
				else//没有发送成功进入这里，进行计数延时，如果初始状态是发送侧，则继续保持发送侧,如果是接收侧，则继续保持接收
				{
					master_delay_count ++;
					if(master_delay_count >= 3)
					{
						value_default = start_state;//回到最初的状态
					}
				}
				if(rx_res == 0x00)//表示接收成功，此时切换状态
				{
					value_default = 0;
					master_delay_count = 0;
				}
				else//没有接收成功，进行计数延时，和上述保持一致，
				{
					pedal_delay_count ++;
					if(pedal_delay_count >3)
					{
						value_default = start_state;//回到最初的状态
					}
				}
        }


		vTaskDelay(200);
	}
}
